/*
    SDL - Simple DirectMedia Layer
    Partial implementation of SDL library (originally written by
    Sam Lantinga <slouken@libsdl.org>) for the particular purpose to support
    Prequengine (http://code.google.com/p/prequengine/) on BlackBerry(tm)
    tablets and smartphones.

    Copyright (C) 2013  xlamsp

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

    xlamsp@gmail.com
*/

#ifndef SDL_H_
#define SDL_H_

#include "SDL_stdinc.h"
#include "SDL_audio.h"
#include "SDL_rwops.h"
#include "SDL_video.h"
#include "SDL_cdrom.h"
#include "SDL_timer.h"
#include "SDL_error.h"
#include "SDL_events.h"
#include "SDL_version.h"


/** @name SDL_INIT Flags
 *  These are the flags which may be passed to SDL_Init() -- you should
 *  specify the subsystems which you will be using in your application.
 */
/*@{*/
#define SDL_INIT_TIMER      0x00000001
#define SDL_INIT_AUDIO      0x00000010
#define SDL_INIT_VIDEO      0x00000020
#define SDL_INIT_CDROM      0x00000100
#define SDL_INIT_JOYSTICK   0x00000200
#define SDL_INIT_EVENTS     0x00000400
#define SDL_INIT_EVERYTHING 0x0000FFFF
/*@}*/

/** This function loads the SDL dynamically linked library and initializes
 *  the subsystems specified by 'flags' (and those satisfying dependencies)
 *  Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup
 *  signal handlers for some commonly ignored fatal signals (like SIGSEGV)
 */
extern int SDL_Init(Uint32 flags);

/** This function initializes specific SDL subsystems */
extern int SDL_InitSubSystem(Uint32 flags);

/** This function cleans up specific SDL subsystems */
extern void SDL_QuitSubSystem(Uint32 flags);

/** This function returns mask of the specified subsystems which have
 *  been initialized.
 *  If 'flags' is 0, it returns a mask of all initialized subsystems.
 */
extern Uint32 SDL_WasInit(Uint32 flags);

/** This function cleans up all initialized subsystems and unloads the
 *  dynamically linked library.  You should call it upon all exit conditions.
 */
extern void SDL_Quit(void);

#endif /* SDL_H_ */

